﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Drawing;

namespace GestionEco
{
    public abstract class Carnivore : Animal
    {

        public Carnivore(bool s, int uneVieMax, int uneAttaque, int uneEsquive, int desDegats, int uneVue, int uneRegen, int uneFaimMax, int unCoeffFaim, int uneSoifMax, int unCoeffSoif, int desPointsActionActuels, int unAgeMax, int uneMajorite, int unNbTourReprod, string n, Image img, List<String> unTypeTerrain)
            : base(s, uneVieMax, uneAttaque, uneEsquive, desDegats, uneVue, uneRegen, uneFaimMax, unCoeffFaim, uneSoifMax, unCoeffSoif, desPointsActionActuels, unAgeMax, uneMajorite, unNbTourReprod, n, img, unTypeTerrain)
        {
        }
        public override void seDeplacer()
        {
            base.seDeplacer();
        }

        public void seNourrir(Herbivore proie)
        {
            if (!retraitPoints(POINT_MANGER))
            {
                Console.WriteLine("Plus de points pour manger");
            }
            else
            {
                Random rnd = new Random();
                int ptsAttaque = 0;
                int ptsDegats = 0;
                int ptsEsquive = 0;

                //Attaque du carnivore
                for (int i = 0; i <= this.Attaque; i++)
                {
                    ptsAttaque += rnd.Next(1, 7);
                }

                //Esquive de l'herbivore
                for (int i = 0; i <= proie.Esquive; i++)
                {
                    ptsEsquive += rnd.Next(1, 7);
                }

                //Si attaque > esquive on lance les dés de degats
                if (ptsAttaque > ptsEsquive)
                {
                    for (int i = 0; i <= this.Degats; i++)
                    {
                        ptsDegats += rnd.Next(1, 4);
                    }

                    //soustraction des pts de vie a la proie
                    proie.VieActuelle -= ptsDegats;

                    //appel de nourrir pour nourrir l'attaquant
                    this.nourrir(10);

                    if (proie.VieActuelle < 0)
                    {
                        proie.VieActuelle = 0;
                        Console.WriteLine(proie.NomEtre + " a été tué par " + this.NomEtre);
                    }
                }
                else
                {
                    Console.WriteLine(proie.NomEtre + " n'a pas été touché par " + this.NomEtre);

                }
            }
        }

        public override void nourrir(int pointNourrir)
        {
            this.FaimActuelle += pointNourrir;
        }
    }
}
